#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <conio.h>

		                                                    // globais
    int i,j;
    const int LARGURA=30,ALTURA=20,POSICAO=17;
    char campo[ALTURA][LARGURA];   
    int local,mov,loop;
    char sair;
    
int inicializar_campo(void){   
    for(i=0;i<ALTURA;i++){         											// desenha o campo
        for(j=0;j<LARGURA+1;j++){
            if ( i == 0 || j == 0 || i == ALTURA-1 || j == LARGURA - 1) {
		   	  campo[i][j] ='0';
			}
			else {		
               campo[i][j]=' ';
			}
        }
    }   
}

int inicializar_invaders (void){
	for (i=3;i<28;i=i+2)
	{campo[ALTURA-18][i]='@';}
	for (i=2;i<28;i=i+2)
	{campo[ALTURA-16][i]='@';}
	for (i=3;i<28;i=i+2)
	{campo[ALTURA-14][i]='@';}
	for (i=2;i<28;i=i+2)
	{campo[ALTURA-12][i]='@';}
	}


int movimentar_direita (void){
	if (mov==28){	
	   			 campo[POSICAO][28]='x';}	// limita para nao mover alem do campo
	else{
		 campo[POSICAO][mov]=' ';			
    	 mov++;									// move para direita
		 campo[POSICAO][mov]='x';}
}

int movimentar_esquerda (void){
	if (mov==1){
	   			campo[POSICAO][1]='x';}	      // limita para nao mover alem do campo
	else{
		 campo[POSICAO][mov]=' ';
    	 mov--;									// move para esquerda
    	 campo[POSICAO][mov]='x';}
}
	


int desenhar_tela (void){
	
	
	inicializar_invaders ();
	
	for(i=0;i<ALTURA;i++){
        j=0;
        while(j<LARGURA-1){ 
            printf("%c",campo[i][j]);    // imprime
            j++;
            }
        if(j==LARGURA-1)
        printf("%c\n",campo[i][j]);        // quebra linha
    } 
    printf("%d",loop);
}

int atirar (void){
		   		  campo[POSICAO][mov]='x';
				  int linha;
 		   		  for(linha=POSICAO-1;linha>=1;linha--){
  				  campo[linha][mov]='*';}
				  }	  

int constroi_nave (void){
    char tecla;
	
	if (kbhit ()){
	tecla = getch ();                            // a = 97 d = 100 w = 119

	    switch (tecla) 
         {
                case 97:
                     movimentar_esquerda ();
					 break;
                case 100:
	 	 			 movimentar_direita ();		
	 	 			 break;
                case 119:
					 atirar ();
					 break;                 
                default: 
                     campo[POSICAO][mov]= 'x';
         }
		 }
		 else {campo[POSICAO][mov]= 'x';}
}


     

int main (){
int clock_t;
mov=LARGURA/2;              // para a nave comecar no meio do campo

while (sair!=119){

inicializar_campo ();
constroi_nave ();
desenhar_tela ();

system ("cls");
loop++;
}   


system ("pause");  
}
